package com.turing.post.organization.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 凭证入库单接口
 * 
 * @author wzd
 * @2013-03-13
 */
@Remote
@Local
public interface VoucherInStockOrderDao {

	/**
	 * 根据条件查询凭证入库单列表
	 * 
	 * @param issueBranchNo
	 *            发卡商机构编号
	 * @param status
	 *            状态
	 * @param startDate
	 *            开始交易日期
	 * @param endDate
	 *            结束交易日期
	 * @param page
	 *            页码
	 * @return 凭证入库单列表
	 */
	public List<VoucherInStockOrder> getVoucherInStockOrderList(
			PCPSWebInput webInput, String issueBranchNo, String status,
			String startDate, String endDate, Integer page);

	/**
	 * 根据条件查询凭证入库单列表
	 * 
	 * @param issueBranchNo
	 *            发卡商机构编号
	 * @param status
	 *            状态
	 * @param startDate
	 *            开始交易日期
	 * @param endDate
	 *            结束交易日期
	 * @return 凭证入库单记录数
	 */
	public BigInteger getVoucherInStockOrderListTotal(PCPSWebInput webInput,
			String issueBranchNo, String status, String startDate,
			String endDate);

	/**
	 * 根据凭证入库单id查询凭证入库单明细类对象
	 * 
	 * @param voucherInStockOrderId
	 *            凭证入库单id
	 * @return 凭证入库单对象
	 */
	public VoucherInStockOrder getVoucherInStockOrdeVoucherId(
			BigInteger voucherInStockOrderId);

	/**
	 * 新增凭证入库单
	 * 
	 * @param voucherInStockOrder
	 *            凭证入库单
	 * @throws PCPSApplicationException
	 */
	public void insertVoucherInStockOrder(
			VoucherInStockOrder voucherInStockOrder)
			throws PCPSApplicationException;

	/**
	 * 修改凭证入库单
	 * 
	 * @param voucherInStockOrder
	 *            凭证入库单
	 * @throws PCPSApplicationException
	 */
	public void updateVoucherInStockOrder(
			VoucherInStockOrder voucherInStockOrder)
			throws PCPSApplicationException;

	/**
	 * 修改凭证入库单状态
	 * 
	 * @param voucherInStockOrder
	 *            凭证入库单
	 * @throws PCPSApplicationException
	 */
	public void updateVoucherInStockOrderByStatus(
			VoucherInStockOrder voucherInStockOrder)
			throws PCPSApplicationException;

	/**
	 * 判断入库信息是否重新
	 * 
	 * @param startVoucherNo
	 * @return
	 */
	public Integer getVoucherInStockOrderListByStartVoucherNo(
			String startVoucherNo);
}
